import Vue from "vue";
import VueRouter from "vue-router";
import store from "@/store";

Vue.use(VueRouter);

import routes from "./routes";

// 缓存push方法
let originRouter = VueRouter.prototype.push;
// console.dir(originRouter)
// 修改原型上的方法
VueRouter.prototype.push = function (location, a, b) {
  if (a === undefined || b === undefined) {
    // 只有原型上面的this为当前实例才可以调用
    return originRouter.call(this, location).catch(() => {});
  } else {
    return originRouter.call(this, location, a, b);
  }
};

// 给每个登录和注册添加meta属性 默认隐藏
const router = new VueRouter({
  routes,
  // return 期望滚动到哪个的位置
  scrollBehavior() {
    return { y: 0 };
  },
});

// 添加全局路由守卫
// router.beforeEach(async (to, from, next) => {
//   // 获取token和用户信息
//   let token = store.state.user.token
//   let userInfo = store.state.user.userInfo
//   if (token) {
//     // 用户已经登录 不能返回登录页面
//     if (to.path === '/login') {
//       next('/')
//     } else {
//       // 是否可以获取的到用户信息
//       // userInfo是一个对象 对象的值永远为true
//       if (userInfo.name) {
//         next()
//       } else {
//         try {
//           await store.dispatch('getUserInfo')
//           next()
//         } catch (error) {
//           // token 过期了就不能再重新获取数据了
//           await store.dispatch('getLogout')
//           next('/login')
//         }
//       }
//     }
//   } else {
//     if (to.path.indexOf('/trade') !== -1 || to.path.indexOf('/pay') !== -1 || to.path.indexOf('/center') !== -1) {
//       let mypath = to.path
//       next('/login?mypath=' + mypath)
//     } else {
//       next()
//     }
//   }
// })

export default router;
